home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 October: Mac OS SDK / Dev.CD Oct 96 SDK / Dev.CD Oct 96 SDK2.toast / Development Kits (Disc 2) / OpenDoc Development Framework / ODFDev / ODF / Framewrk / FWPart / Include / FWSOMPrt.h < prev    next >
Encoding:
Text File  |  1996-08-16  |  43.7 KB  |  1,229 lines  |  [TEXT/MPS ]

  1. //========================================================================================
  2. //
  3. //    File:                FWSOMPrt.h
  4. //    Release Version:    $ ODF 1 $
  5. //
  6. //    Copyright:    (c) 1993 - 1996 by Apple Computer, Inc., all rights reserved.
  7. //
  8. //========================================================================================
  9.  
  10. #define SOM_Module_sompart_Source
  11.  
  12. //========================================================================================
  13. // Configuration checks
  14. //========================================================================================
  15.  
  16. #ifndef FW_SUPPORTS_EMBEDDING
  17. #error You must define FW_SUPPORTS_EMBEDDING to be 0 or 1
  18. #endif
  19.  
  20. #ifndef FW_SUPPORTS_EXTENSIONS
  21. #error You must define FW_SUPPORTS_EXTENSIONS to be 0 or 1
  22. #endif
  23.  
  24. #ifndef FW_SUPPORTS_SCRIPTING
  25. #error You must define FW_SUPPORTS_SCRIPTING to be 0 or 1
  26. #endif
  27.  
  28. #if !FW_SUPPORTS_EXTENSIONS && FW_SUPPORTS_SCRIPTING
  29. #error Scripting support requires Extensions support!
  30. #endif
  31.  
  32. //========================================================================================
  33. // Includes
  34. //========================================================================================
  35.  
  36. #include "SOMPart.xih"
  37.  
  38. #if FW_SUPPORTS_EMBEDDING
  39. #include "SOMIter.xh"
  40.  
  41. #ifndef FWFRMING_H
  42. #include "FWFrming.h"
  43. #endif
  44.  
  45. #endif
  46.  
  47. #ifndef FWODPART_H
  48. #include "FWODPart.h"
  49. #endif
  50.  
  51. #ifndef FWGRINIT_H
  52. #include "FWGrInit.h"
  53. #endif
  54.  
  55. #ifndef SOM_ODShape_xh
  56. #include <Shape.xh>
  57. #endif
  58.  
  59. #ifndef SOM_Module_OpenDoc_Errors_defined
  60. #include <ErrorDef.h>
  61. #endif
  62.  
  63. //========================================================================================
  64. // Extension macro
  65. //========================================================================================
  66.  
  67. #if FW_SUPPORTS_EXTENSIONS
  68.     #ifndef FWEXTMGR_H
  69.     #include "FWExtMgr.h"
  70.     #endif
  71.     #define FW_CREATE_EXTENSION_MANAGER    part->PrivSetExtensionManager(FW_NEW(FW_CExtensionManager, (part)));
  72.     #define FW_HAS_EXTENSION  \
  73.         FW_CExtensionManager *manager = somSelf->GetFrameworkPart(ev)->GetExtensionManager(ev); \
  74.         if (manager) result = manager->HasExtension(ev, extensionName);
  75.     #define FW_ACQUIRE_EXTENSION \
  76.         FW_CExtensionManager *manager = somSelf->GetFrameworkPart(ev)->GetExtensionManager(ev); \
  77.         if (manager) extension = manager->AcquireExtension(ev, extensionName, FW_kCreateExtension);
  78.     #define FW_RELEASE_EXTENSION \
  79.         FW_CExtensionManager *manager = somSelf->GetFrameworkPart(ev)->GetExtensionManager(ev); \
  80.         if (manager) released = manager->ReleaseExtension(ev, extension);
  81.     #define FW_ABANDON_EXTENSIONS \
  82.         FW_CExtensionManager *manager = somSelf->GetFrameworkPart(ev)->GetExtensionManager(ev); \
  83.         if (manager) manager->AbandonExtensions(ev);
  84.     #define FW_PURGE_EXTENSIONS \
  85.         FW_CExtensionManager *manager = somSelf->GetFrameworkPart(ev)->GetExtensionManager(ev); \
  86.         if (manager) manager->PurgeCachedExtensions(ev);
  87.     #define FW_DELETE_EXTENSION_MANAGER \
  88.         FW_CExtensionManager *manager = part->GetExtensionManager(ev); \
  89.         delete manager;
  90. #else
  91.     #define FW_CREATE_EXTENSION_MANAGER
  92.     #define FW_HAS_EXTENSION
  93.     #define FW_ACQUIRE_EXTENSION
  94.     #define FW_RELEASE_EXTENSION
  95.     #define FW_ABANDON_EXTENSIONS
  96.     #define FW_PURGE_EXTENSIONS
  97.     #define FW_DELETE_EXTENSION_MANAGER
  98. #endif
  99.  
  100. //========================================================================================
  101. // Semantic Interface macro
  102. //========================================================================================
  103.  
  104. #if FW_SUPPORTS_SCRIPTING
  105.     #ifndef FWSEMINT_H
  106.     #include "FWSemInt.h"
  107.     #endif
  108.     #ifndef FWPRTSCP_H
  109.     #include "FWPrtScp.h"
  110.     #endif
  111.     #ifndef FW_SEMANTIC_INTERFACE_CLASS
  112.         #define FW_SEMANTIC_INTERFACE_CLASS FW_CSemanticInterface
  113.     #endif
  114.     #define FW_CREATE_SEMANTIC_INTERFACE \
  115.         FW_SEMANTIC_INTERFACE_CLASS* semInt = FW_NEW(FW_SEMANTIC_INTERFACE_CLASS,(ev, part)); \
  116.         semInt->RegisterCallbacks(ev); \
  117.         part->PrivSetSemanticInterface(semInt); \
  118.         part->GetExtensionManager(ev)->RegisterExtension(ev, kODExtSemanticInterface, FW_CSemanticInterface::PrivCreate, NULL, FW_kCacheWhenReleased);
  119.     #define FW_EMBEDDED_FRAME_SPEC \
  120.         FW_MPartScriptable::EmbeddedFrameSpecGlue(ev, somSelf->GetFrameworkPart(ev), embeddedFrame, spec);
  121. #else
  122.     #define FW_CREATE_SEMANTIC_INTERFACE
  123.     #define FW_EMBEDDED_FRAME_SPEC \
  124.         FW_SetEvError(ev, kODErrCannotEmbed);
  125. #endif
  126.  
  127. //========================================================================================
  128. // FW_SOMPART macro
  129. //========================================================================================
  130.  
  131. #define FW_SOMPART(ModuleName, PartName, PartClass) \
  132.     FW_LEAF_PART_API(ModuleName, PartName, PartClass) \
  133.     FW_CONTAINER_PART_API(ModuleName, PartName, PartClass)
  134.     
  135. //========================================================================================
  136. // FW_LEAF_API macro
  137. //========================================================================================
  138.  
  139. #define FW_LEAF_PART_API(ModuleName, PartName, PartClass) \
  140. \
  141. /*======================================================================================== \
  142.  PartName \
  143. ========================================================================================*/\
  144.  \
  145. /*---------------------------------------------------------------------------------------- \
  146.     GetFrameworkPart \
  147. ----------------------------------------------------------------------------------------*/ \
  148.  \
  149. SOM_Scope FW_CPart* SOMLINK PartName##GetFrameworkPart(ModuleName##_##PartName *somSelf, Environment *ev) \
  150. { \
  151.       ModuleName##_##PartName##Data *somThis = ModuleName##_##PartName##GetData(somSelf); \
  152.  \
  153.     return somThis->fFrameworkPart; \
  154. } \
  155.  \
  156. /*---------------------------------------------------------------------------------------- \
  157.     NewFrameworkPart \
  158. ----------------------------------------------------------------------------------------*/ \
  159.  \
  160. SOM_Scope FW_CPart*  SOMLINK PartName##NewFrameworkPart(ModuleName##_##PartName *somSelf, Environment *ev, \
  161.         ODPart* partWrapper) \
  162. { \
  163.     FW_PrivInitGraphics(); \
  164.     PartClass* part = FW_NEW(PartClass, (partWrapper)); \
  165.     FW_CREATE_EXTENSION_MANAGER \
  166.     FW_CREATE_SEMANTIC_INTERFACE \
  167.     return part; \
  168. } \
  169.  \
  170. /*---------------------------------------------------------------------------------------- \
  171.     somInit \
  172. ----------------------------------------------------------------------------------------*/ \
  173.  \
  174. SOM_Scope void  SOMLINK PartName##somInit(ModuleName##_##PartName *somSelf) \
  175. { \
  176.     ModuleName##_##PartName##_parent_ODPart_somInit(somSelf); \
  177. } \
  178.  \
  179. /*---------------------------------------------------------------------------------------- \
  180.     somUninit \
  181. ----------------------------------------------------------------------------------------*/ \
  182.  \
  183. SOM_Scope void  SOMLINK PartName##somUninit(ModuleName##_##PartName *somSelf) \
  184. { \
  185.     FW_TRY \
  186.     { \
  187.         FW_SOMEnvironment ev; \
  188.         if (somSelf->GetFrameworkPart(ev)) \
  189.         { \
  190.             FW_CPart *part = somSelf->GetFrameworkPart(ev); \
  191.             FW_DELETE_EXTENSION_MANAGER \
  192.             delete part; \
  193.         } \
  194.              \
  195.         ModuleName##_##PartName##_parent_ODPart_somUninit(somSelf); \
  196.     } \
  197.     FW_CATCH_BEGIN \
  198.     FW_CATCH_EVERYTHING() \
  199.     { \
  200.     } \
  201.     FW_CATCH_END\
  202. } \
  203.  \
  204. /*---------------------------------------------------------------------------------------- \
  205.     FulfillPromise \
  206. ----------------------------------------------------------------------------------------*/ \
  207.  \
  208. SOM_Scope void  SOMLINK PartName##FulfillPromise(ModuleName##_##PartName *somSelf, Environment *ev, \
  209.         ODStorageUnitView* promiseSUView) \
  210. { \
  211.     FW_CODPart::FulfillPromise(ev, somSelf->GetFrameworkPart(ev), promiseSUView); \
  212. } \
  213.  \
  214. /*---------------------------------------------------------------------------------------- \
  215.     DragEnter \
  216. ----------------------------------------------------------------------------------------*/ \
  217.  \
  218. SOM_Scope ODDragResult  SOMLINK PartName##DragEnter(ModuleName##_##PartName *somSelf, Environment *ev, \
  219.         ODDragItemIterator* dragInfo, \
  220.         ODFacet* facet, \
  221.         ODPoint* where) \
  222. { \
  223.     return FW_CODPart::DragEnter(ev, dragInfo, facet, *where); \
  224. } \
  225.  \
  226. /*---------------------------------------------------------------------------------------- \
  227.     DragWithin \
  228. ----------------------------------------------------------------------------------------*/ \
  229.  \
  230. SOM_Scope ODDragResult  SOMLINK PartName##DragWithin(ModuleName##_##PartName *somSelf, Environment *ev, \
  231.         ODDragItemIterator* dragInfo, \
  232.         ODFacet* facet, \
  233.         ODPoint* where) \
  234. { \
  235.     return FW_CODPart::DragWithin(ev, dragInfo, facet, *where); \
  236. } \
  237.  \
  238. /*---------------------------------------------------------------------------------------- \
  239.     DragLeave \
  240. ----------------------------------------------------------------------------------------*/ \
  241.  \
  242. SOM_Scope void  SOMLINK PartName##DragLeave(ModuleName##_##PartName *somSelf, Environment *ev, \
  243.         ODFacet* facet, \
  244.         ODPoint* where) \
  245. { \
  246.     FW_CODPart::DragLeave(ev, facet, *where); \
  247. } \
  248.  \
  249. /*---------------------------------------------------------------------------------------- \
  250.     Drop \
  251. ----------------------------------------------------------------------------------------*/ \
  252.  \
  253. SOM_Scope ODDropResult  SOMLINK PartName##Drop(ModuleName##_##PartName *somSelf, Environment *ev, \
  254.         ODDragItemIterator* dropInfo, \
  255.         ODFacet* facet, \
  256.         ODPoint* where) \
  257. { \
  258.     return FW_CODPart::Drop(ev, dropInfo, facet, *where); \
  259. } \
  260.  \
  261. /*---------------------------------------------------------------------------------------- \
  262.     DropCompleted \
  263. ----------------------------------------------------------------------------------------*/ \
  264.  \
  265. SOM_Scope void  SOMLINK PartName##DropCompleted(ModuleName##_##PartName *somSelf, Environment *ev, \
  266.         ODPart* destPart, \
  267.         ODDropResult dropResult) \
  268. { \
  269.     FW_CODPart::DropCompleted(ev, destPart, dropResult); \
  270. } \
  271.  \
  272. /*---------------------------------------------------------------------------------------- \
  273.     ContainingPartPropertiesUpdated \
  274. ----------------------------------------------------------------------------------------*/ \
  275.  \
  276. SOM_Scope void  SOMLINK PartName##ContainingPartPropertiesUpdated(ModuleName##_##PartName *somSelf, Environment *ev, \
  277.         ODFrame* frame, \
  278.         ODStorageUnit* propertyUnit) \
  279. { \
  280.     FW_CODPart::ContainingPartPropertiesUpdated(ev, frame, propertyUnit); \
  281. } \
  282.  \
  283. /*---------------------------------------------------------------------------------------- \
  284.     EmbeddedFrameSpec \
  285. ----------------------------------------------------------------------------------------*/ \
  286.  \
  287. SOM_Scope void  SOMLINK PartName##EmbeddedFrameSpec(ModuleName##_##PartName *somSelf, Environment *ev, \
  288.         ODFrame* embeddedFrame, \
  289.         ODObjectSpec* spec) \
  290. { \
  291.     FW_EMBEDDED_FRAME_SPEC \
  292. } \
  293.  \
  294. /*---------------------------------------------------------------------------------------- \
  295.     DisplayFrameAdded \
  296. ----------------------------------------------------------------------------------------*/ \
  297.  \
  298. SOM_Scope void  SOMLINK PartName##DisplayFrameAdded(ModuleName##_##PartName *somSelf, Environment *ev, \
  299.         ODFrame* odFrame) \
  300. { \
  301.     FW_CODPart::DisplayFrameAdded(ev, somSelf->GetFrameworkPart(ev), odFrame); \
  302. } \
  303.  \
  304. /*---------------------------------------------------------------------------------------- \
  305.     AttachSourceFrame \
  306. ----------------------------------------------------------------------------------------*/ \
  307.  \
  308. SOM_Scope void  SOMLINK PartName##AttachSourceFrame(ModuleName##_##PartName *somSelf, Environment *ev, \
  309.         ODFrame* odFrame, \
  310.         ODFrame* odSourceFrame) \
  311. { \
  312.     FW_CODPart::AttachSourceFrame(ev, odFrame, odSourceFrame); \
  313. } \
  314.  \
  315. /*---------------------------------------------------------------------------------------- \
  316.     DisplayFrameRemoved \
  317. ----------------------------------------------------------------------------------------*/ \
  318.  \
  319. SOM_Scope void  SOMLINK PartName##DisplayFrameRemoved(ModuleName##_##PartName *somSelf, Environment *ev, \
  320.         ODFrame* odFrame) \
  321. { \
  322.     FW_CODPart::DisplayFrameRemoved(ev, odFrame); \
  323. } \
  324.  \
  325. /*---------------------------------------------------------------------------------------- \
  326.     DisplayFrameConnected \
  327. ----------------------------------------------------------------------------------------*/ \
  328.  \
  329. SOM_Scope void  SOMLINK PartName##DisplayFrameConnected(ModuleName##_##PartName *somSelf, Environment *ev, \
  330.         ODFrame* odFrame) \
  331. { \
  332.     FW_CODPart::DisplayFrameConnected(ev, odFrame); \
  333. } \
  334.  \
  335. /*---------------------------------------------------------------------------------------- \
  336.     DisplayFrameClosed \
  337. ----------------------------------------------------------------------------------------*/ \
  338.  \
  339. SOM_Scope void  SOMLINK PartName##DisplayFrameClosed(ModuleName##_##PartName *somSelf, Environment *ev, \
  340.         ODFrame* odFrame) \
  341. { \
  342.     FW_CODPart::DisplayFrameClosed(ev, odFrame); \
  343. } \
  344.  \
  345. /*---------------------------------------------------------------------------------------- \
  346.     FrameShapeChanged \
  347. ----------------------------------------------------------------------------------------*/ \
  348.  \
  349. SOM_Scope void  SOMLINK PartName##FrameShapeChanged(ModuleName##_##PartName *somSelf, Environment *ev, \
  350.         ODFrame* frame) \
  351. { \
  352.     FW_CODPart::FrameShapeChanged(ev, frame); \
  353. } \
  354.  \
  355. /*---------------------------------------------------------------------------------------- \
  356.     ViewTypeChanged \
  357. ----------------------------------------------------------------------------------------*/ \
  358.  \
  359. SOM_Scope void  SOMLINK PartName##ViewTypeChanged(ModuleName##_##PartName *somSelf, Environment *ev, \
  360.         ODFrame* frame) \
  361. { \
  362.     FW_CODPart::ViewTypeChanged(ev, frame); \
  363. } \
  364.  \
  365. /*---------------------------------------------------------------------------------------- \
  366.     PresentationChanged \
  367. ----------------------------------------------------------------------------------------*/ \
  368.  \
  369. SOM_Scope void  SOMLINK PartName##PresentationChanged(ModuleName##_##PartName *somSelf, Environment *ev, \
  370.         ODFrame* frame) \
  371. { \
  372.     FW_CODPart::PresentationChanged(ev, frame); \
  373. } \
  374.  \
  375. /*---------------------------------------------------------------------------------------- \
  376.     SequenceChanged \
  377. ----------------------------------------------------------------------------------------*/ \
  378.  \
  379. SOM_Scope void  SOMLINK PartName##SequenceChanged(ModuleName##_##PartName *somSelf, Environment *ev, \
  380.         ODFrame* frame) \
  381. { \
  382.     FW_CODPart::SequenceChanged(ev, frame); \
  383. } \
  384.  \
  385. /*---------------------------------------------------------------------------------------- \
  386.     WritePartInfo \
  387. ----------------------------------------------------------------------------------------*/ \
  388.  \
  389. SOM_Scope void  SOMLINK PartName##WritePartInfo(ModuleName##_##PartName *somSelf, Environment *ev, \
  390.         ODInfoType partInfo, \
  391.         ODStorageUnitView* storageUnitView) \
  392. { \
  393.     FW_CODPart::WritePartInfo(ev, partInfo, storageUnitView); \
  394. } \
  395.  \
  396. /*---------------------------------------------------------------------------------------- \
  397.     ReadPartInfo \
  398. ----------------------------------------------------------------------------------------*/ \
  399.  \
  400. SOM_Scope ODInfoType  SOMLINK PartName##ReadPartInfo(ModuleName##_##PartName *somSelf, Environment *ev, \
  401.         ODFrame* odFrame, \
  402.         ODStorageUnitView* storageUnitView) \
  403. { \
  404.     return FW_CODPart::ReadPartInfo(ev, somSelf->GetFrameworkPart(ev), odFrame, storageUnitView); \
  405. } \
  406.  \
  407. /*---------------------------------------------------------------------------------------- \
  408.     ClonePartInfo \
  409. ----------------------------------------------------------------------------------------*/ \
  410.  \
  411. SOM_Scope void  SOMLINK PartName##ClonePartInfo(ModuleName##_##PartName *somSelf, Environment *ev, \
  412.         ODDraftKey key, \
  413.         ODInfoType partInfo, \
  414.         ODStorageUnitView* storageUnitView, \
  415.         ODFrame* scope) \
  416. { \
  417.     FW_CODPart::ClonePartInfo(ev, \
  418.                                 key, \
  419.                                 partInfo, \
  420.                                 storageUnitView, \
  421.                                 scope); \
  422. } \
  423.  \
  424. /*---------------------------------------------------------------------------------------- \
  425.     Open \
  426. ----------------------------------------------------------------------------------------*/ \
  427.  \
  428. SOM_Scope ODID  SOMLINK PartName##Open(ModuleName##_##PartName *somSelf, Environment *ev, \
  429.         ODFrame* odFrame) \
  430. { \
  431.     return FW_CODPart::Open(ev, somSelf->GetFrameworkPart(ev), odFrame); \
  432. } \
  433.  \
  434. /*---------------------------------------------------------------------------------------- \
  435.     FacetAdded \
  436. ----------------------------------------------------------------------------------------*/ \
  437.  \
  438. SOM_Scope void  SOMLINK PartName##FacetAdded(ModuleName##_##PartName *somSelf, Environment *ev, \
  439.         ODFacet* facet) \
  440. { \
  441.     FW_CODPart::FacetAdded(ev, facet); \
  442. } \
  443.  \
  444. /*---------------------------------------------------------------------------------------- \
  445.     FacetRemoved \
  446. ----------------------------------------------------------------------------------------*/ \
  447.  \
  448. SOM_Scope void  SOMLINK PartName##FacetRemoved(ModuleName##_##PartName *somSelf, Environment *ev, \
  449.         ODFacet* facet) \
  450. { \
  451.     FW_CODPart::FacetRemoved(ev, facet); \
  452. } \
  453.  \
  454. /*---------------------------------------------------------------------------------------- \
  455.     CanvasChanged \
  456. ----------------------------------------------------------------------------------------*/ \
  457.  \
  458. SOM_Scope void  SOMLINK PartName##CanvasChanged(ModuleName##_##PartName *somSelf, Environment *ev, \
  459.         ODFacet* facet) \
  460. { \
  461.     FW_CODPart::CanvasChanged(ev, facet); \
  462. } \
  463.  \
  464. /*---------------------------------------------------------------------------------------- \
  465.     GeometryChanged \
  466. ----------------------------------------------------------------------------------------*/ \
  467.  \
  468. SOM_Scope void  SOMLINK PartName##GeometryChanged(ModuleName##_##PartName *somSelf, Environment *ev, \
  469.         ODFacet* facet, \
  470.         ODBoolean clipShapeChanged, \
  471.         ODBoolean externalTransformChanged) \
  472. { \
  473.     FW_CODPart::GeometryChanged(ev, facet, clipShapeChanged, externalTransformChanged); \
  474. } \
  475.  \
  476. /*---------------------------------------------------------------------------------------- \
  477.     Draw \
  478. ----------------------------------------------------------------------------------------*/ \
  479.  \
  480. SOM_Scope void  SOMLINK PartName##Draw(ModuleName##_##PartName *somSelf, Environment *ev, \
  481.         ODFacet* facet, \
  482.         ODShape* invalidShape) \
  483. { \
  484.     FW_CODPart::Draw(ev, facet, invalidShape); \
  485. } \
  486.  \
  487. /*---------------------------------------------------------------------------------------- \
  488.     CanvasUpdated \
  489. ----------------------------------------------------------------------------------------*/ \
  490.  \
  491. SOM_Scope void  SOMLINK PartName##CanvasUpdated(ModuleName##_##PartName *somSelf, Environment *ev, \
  492.         ODCanvas* canvas) \
  493. { \
  494.     FW_CODPart::CanvasUpdated(ev,canvas); \
  495. } \
  496.  \
  497. /*---------------------------------------------------------------------------------------- \
  498.     HighlightChanged \
  499. ----------------------------------------------------------------------------------------*/ \
  500.  \
  501. SOM_Scope void  SOMLINK PartName##HighlightChanged(ModuleName##_##PartName *somSelf, Environment *ev, \
  502.         ODFacet* facet) \
  503. { \
  504.     FW_CODPart::HighlightChanged(ev,facet); \
  505. } \
  506.  \
  507. /*---------------------------------------------------------------------------------------- \
  508.     GetPrintResolution \
  509. ----------------------------------------------------------------------------------------*/ \
  510.  \
  511. SOM_Scope ODULong  SOMLINK PartName##GetPrintResolution(ModuleName##_##PartName *somSelf, Environment *ev, \
  512.         ODFrame* frame) \
  513. { \
  514.     return FW_CODPart::GetPrintResolution(ev,frame); \
  515. } \
  516.  \
  517. /*---------------------------------------------------------------------------------------- \
  518.     CreateLink \
  519. ----------------------------------------------------------------------------------------*/ \
  520.  \
  521. SOM_Scope ODLinkSource*  SOMLINK PartName##CreateLink(ModuleName##_##PartName *somSelf, Environment *ev, \
  522.         ODByteArray* data) \
  523. { \
  524.     return FW_CODPart::CreateLink(ev, somSelf->GetFrameworkPart(ev), data); \
  525. } \
  526.  \
  527. /*---------------------------------------------------------------------------------------- \
  528.     LinkUpdated \
  529. ----------------------------------------------------------------------------------------*/ \
  530.  \
  531. SOM_Scope void  SOMLINK PartName##LinkUpdated(ModuleName##_##PartName *somSelf, Environment *ev, \
  532.         ODLink* updatedLink, \
  533.         ODUpdateID updateID) \
  534. { \
  535.     FW_CODPart::LinkUpdated(ev, somSelf->GetFrameworkPart(ev), updatedLink, updateID); \
  536. } \
  537.  \
  538. /*---------------------------------------------------------------------------------------- \
  539.     RevealLink
  540. ----------------------------------------------------------------------------------------*/ \
  541.  \
  542. SOM_Scope void  SOMLINK PartName##RevealLink(ModuleName##_##PartName *somSelf, Environment *ev, \
  543.         ODLinkSource* linkSource) \
  544. { \
  545.     FW_CODPart::RevealLink(ev, somSelf->GetFrameworkPart(ev), linkSource); \
  546. } \
  547.  \
  548. /*---------------------------------------------------------------------------------------- \
  549.     EditInLinkAttempted \
  550. ----------------------------------------------------------------------------------------*/ \
  551.  \
  552. SOM_Scope ODBoolean  SOMLINK PartName##EditInLinkAttempted(ModuleName##_##PartName *somSelf, Environment *ev, \
  553.         ODFrame* frame) \
  554. { \
  555.     return FW_CODPart::EditInLinkAttempted(ev, somSelf->GetFrameworkPart(ev), frame); \
  556. } \
  557.  \
  558. /*---------------------------------------------------------------------------------------- \
  559.     LinkStatusChanged \
  560. ----------------------------------------------------------------------------------------*/ \
  561.  \
  562. SOM_Scope void  SOMLINK PartName##LinkStatusChanged(ModuleName##_##PartName *somSelf, Environment *ev, \
  563.         ODFrame* frame) \
  564. { \
  565.     FW_CODPart::LinkStatusChanged(ev, somSelf->GetFrameworkPart(ev), frame); \
  566. } \
  567.  \
  568. /*---------------------------------------------------------------------------------------- \
  569.     BeginRelinquishFocus \
  570. ----------------------------------------------------------------------------------------*/ \
  571.  \
  572. SOM_Scope ODBoolean  SOMLINK PartName##BeginRelinquishFocus(ModuleName##_##PartName *somSelf, Environment *ev, \
  573.         ODTypeToken focus, \
  574.         ODFrame* ownerFrame, \
  575.         ODFrame* proposedFrame) \
  576. { \
  577.     return FW_CODPart::BeginRelinquishFocus(ev, \
  578.                                             somSelf->GetFrameworkPart(ev),  \
  579.                                             focus, \
  580.                                             ownerFrame, \
  581.                                             proposedFrame); \
  582. } \
  583.  \
  584. /*---------------------------------------------------------------------------------------- \
  585.     CommitRelinquishFocus \
  586. ----------------------------------------------------------------------------------------*/ \
  587.  \
  588. SOM_Scope void  SOMLINK PartName##CommitRelinquishFocus(ModuleName##_##PartName *somSelf, Environment *ev, \
  589.         ODTypeToken focus, \
  590.         ODFrame* ownerFrame, \
  591.         ODFrame* proposedFrame) \
  592. { \
  593.     FW_CODPart::CommitRelinquishFocus(ev,  \
  594.                                         focus, \
  595.                                         ownerFrame, \
  596.                                         proposedFrame); \
  597. } \
  598.  \
  599. /*---------------------------------------------------------------------------------------- \
  600.     AbortRelinquishFocus \
  601. ----------------------------------------------------------------------------------------*/ \
  602. \
  603. SOM_Scope void  SOMLINK PartName##AbortRelinquishFocus(ModuleName##_##PartName *somSelf, Environment *ev, \
  604.         ODTypeToken focus, \
  605.         ODFrame* ownerFrame, \
  606.         ODFrame* proposedFrame) \
  607. { \
  608.     FW_CODPart::AbortRelinquishFocus(ev,focus,ownerFrame,proposedFrame); \
  609. } \
  610.  \
  611. /*---------------------------------------------------------------------------------------- \
  612.     FocusAcquired \
  613. ----------------------------------------------------------------------------------------*/ \
  614.  \
  615. SOM_Scope void  SOMLINK PartName##FocusAcquired(ModuleName##_##PartName *somSelf, Environment *ev, \
  616.         ODTypeToken focus, \
  617.         ODFrame* ownerFrame) \
  618. { \
  619.     FW_CODPart::FocusAcquired(ev, focus, ownerFrame); \
  620. } \
  621.  \
  622. /*---------------------------------------------------------------------------------------- \
  623.     FocusLost \
  624. ----------------------------------------------------------------------------------------*/ \
  625.  \
  626. SOM_Scope void  SOMLINK PartName##FocusLost(ModuleName##_##PartName *somSelf, Environment *ev, \
  627.         ODTypeToken focus, \
  628.         ODFrame* ownerFrame) \
  629. { \
  630.     FW_CODPart::FocusLost(ev, focus, ownerFrame); \
  631. } \
  632.  \
  633. /*---------------------------------------------------------------------------------------- \
  634.     CloneInto \
  635. ----------------------------------------------------------------------------------------*/ \
  636.  \
  637. SOM_Scope void  SOMLINK PartName##CloneInto(ModuleName##_##PartName *somSelf, Environment *ev, \
  638.         ODDraftKey key, \
  639.         ODStorageUnit* toSU, \
  640.         ODFrame* scope) \
  641. { \
  642.     FW_TRY \
  643.     { \
  644.         ModuleName##_##PartName##_parent_ODPart_CloneInto(somSelf,ev, key, toSU, scope);     \
  645.         FW_CODPart::CloneInto(ev, somSelf->GetFrameworkPart(ev), key, toSU, scope); \
  646.     } \
  647.     FW_CATCH_BEGIN \
  648.     FW_CATCH_REFERENCE(FW_XException, exception) \
  649.     { \
  650.         FW_SetException(ev, exception); \
  651.     } \
  652.     FW_CATCH_END\
  653. } \
  654.  \
  655. /*---------------------------------------------------------------------------------------- \
  656.     ExternalizeKinds \
  657. ----------------------------------------------------------------------------------------*/ \
  658.  \
  659. SOM_Scope void  SOMLINK PartName##ExternalizeKinds(ModuleName##_##PartName *somSelf, Environment *ev, \
  660.         ODTypeList* kindset) \
  661. { \
  662.     FW_CODPart::ExternalizeKinds(ev, kindset); \
  663. } \
  664.  \
  665. /*---------------------------------------------------------------------------------------- \
  666.     ChangeKind \
  667. ----------------------------------------------------------------------------------------*/ \
  668.  \
  669. SOM_Scope void  SOMLINK PartName##ChangeKind(ModuleName##_##PartName *somSelf, Environment *ev, \
  670.         ODType kind) \
  671. { \
  672.     FW_CODPart::ChangeKind(ev,kind); \
  673. } \
  674.  \
  675. /*---------------------------------------------------------------------------------------- \
  676.     HandleEvent \
  677. ----------------------------------------------------------------------------------------*/ \
  678.  \
  679. SOM_Scope ODBoolean  SOMLINK PartName##HandleEvent(ModuleName##_##PartName *somSelf, Environment *ev, \
  680.         ODEventData* event, \
  681.         ODFrame* frame, \
  682.         ODFacet* facet, \
  683.         ODEventInfo* eventInfo) \
  684. { \
  685.     return FW_CODPart::HandleEvent(ev, somSelf->GetFrameworkPart(ev), event, frame, facet, eventInfo); \
  686. } \
  687.  \
  688. /*---------------------------------------------------------------------------------------- \
  689.     AdjustMenus \
  690. ----------------------------------------------------------------------------------------*/ \
  691.  \
  692. SOM_Scope void  SOMLINK PartName##AdjustMenus(ModuleName##_##PartName *somSelf, Environment *ev, \
  693.         ODFrame* odFrame) \
  694. { \
  695.     FW_CODPart::AdjustMenus(ev, somSelf->GetFrameworkPart(ev), odFrame); \
  696. } \
  697.  \
  698. /*---------------------------------------------------------------------------------------- \
  699.     UndoAction \
  700. ----------------------------------------------------------------------------------------*/ \
  701.  \
  702. SOM_Scope void  SOMLINK PartName##UndoAction(ModuleName##_##PartName *somSelf, Environment *ev, \
  703.         ODActionData* actionState) \
  704. { \
  705.     FW_CODPart::UndoAction(ev, somSelf->GetFrameworkPart(ev), actionState); \
  706. } \
  707.  \
  708. /*---------------------------------------------------------------------------------------- \
  709.     RedoAction \
  710. ----------------------------------------------------------------------------------------*/ \
  711.  \
  712. SOM_Scope void  SOMLINK PartName##RedoAction(ModuleName##_##PartName *somSelf, Environment *ev, \
  713.         ODActionData* actionState) \
  714. { \
  715.     FW_CODPart::RedoAction(ev, actionState); \
  716. } \
  717.  \
  718. /*---------------------------------------------------------------------------------------- \
  719.     DisposeActionState \
  720. ----------------------------------------------------------------------------------------*/ \
  721.  \
  722. SOM_Scope void  SOMLINK PartName##DisposeActionState(ModuleName##_##PartName *somSelf, Environment *ev, \
  723.         ODActionData* actionState, \
  724.         ODDoneState doneState) \
  725. { \
  726.     FW_CODPart::DisposeActionState(ev, actionState, doneState); \
  727. } \
  728.  \
  729. /*---------------------------------------------------------------------------------------- \
  730.     WriteActionState \
  731. ----------------------------------------------------------------------------------------*/ \
  732.  \
  733. SOM_Scope void  SOMLINK PartName##WriteActionState(ModuleName##_##PartName *somSelf, Environment *ev, \
  734.         ODActionData* actionState, \
  735.         ODStorageUnitView* storageUnitView) \
  736. { \
  737.     FW_CODPart::WriteActionState(ev, actionState, storageUnitView); \
  738. } \
  739.  \
  740. /*---------------------------------------------------------------------------------------- \
  741.     ReadActionState \
  742. ----------------------------------------------------------------------------------------*/ \
  743.  \
  744. SOM_Scope ODActionData  SOMLINK PartName##ReadActionState(ModuleName##_##PartName *somSelf, Environment *ev, \
  745.         ODStorageUnitView* storageUnitView) \
  746. { \
  747.     ODActionData actionData; \
  748.     actionData._maximum = 0; \
  749.     actionData._length = 0; \
  750.     actionData._buffer = NULL; \
  751.      \
  752.     FW_CODPart::ReadActionState(ev, storageUnitView, &actionData); \
  753.      \
  754.     return actionData; \
  755. } \
  756.  \
  757. /*---------------------------------------------------------------------------------------- \
  758.     InitPart \
  759. ----------------------------------------------------------------------------------------*/ \
  760.  \
  761. SOM_Scope void  SOMLINK PartName##InitPart(ModuleName##_##PartName *somSelf, Environment *ev, \
  762.         ODStorageUnit* storageUnit, \
  763.         ODPart* partWrapper) \
  764. { \
  765.     ModuleName##_##PartName##Data *somThis = ModuleName##_##PartName##GetData(somSelf); \
  766.  \
  767.      FW_TRY \
  768.      { \
  769.         ModuleName##_##PartName##_parent_ODPart_InitPart(somSelf, ev, storageUnit, partWrapper); \
  770.         somThis->fFrameworkPart = somSelf->NewFrameworkPart(ev, partWrapper);         \
  771.          \
  772.         FW_CODPart::InitPart(ev, somThis->fFrameworkPart, storageUnit); \
  773.     } \
  774.     FW_CATCH_BEGIN \
  775.     FW_CATCH_REFERENCE(FW_XException, exception) \
  776.     { \
  777.         FW_SetException(ev, exception); \
  778.     } \
  779.     FW_CATCH_END \
  780. } \
  781.  \
  782. /*---------------------------------------------------------------------------------------- \
  783.     InitPartFromStorage \
  784. ----------------------------------------------------------------------------------------*/ \
  785.  \
  786. SOM_Scope void  SOMLINK PartName##InitPartFromStorage(ModuleName##_##PartName *somSelf, Environment *ev, \
  787.         ODStorageUnit* storageUnit, \
  788.         ODPart* partWrapper) \
  789. { \
  790.     ModuleName##_##PartName##Data *somThis = ModuleName##_##PartName##GetData(somSelf); \
  791.  \
  792.      FW_TRY \
  793.      { \
  794.         ModuleName##_##PartName##_parent_ODPart_InitPartFromStorage(somSelf, ev, storageUnit, partWrapper); \
  795.         somThis->fFrameworkPart = somSelf->NewFrameworkPart(ev, partWrapper);     \
  796.      \
  797.         FW_CODPart::InitPartFromStorage(ev, somThis->fFrameworkPart, storageUnit); \
  798.     } \
  799.     FW_CATCH_BEGIN \
  800.     FW_CATCH_REFERENCE(FW_XException, exception) \
  801.     { \
  802.         FW_SetException(ev, exception); \
  803.     } \
  804.     FW_CATCH_END \
  805. } \
  806.  \
  807. /*---------------------------------------------------------------------------------------- \
  808.     Externalize \
  809. ----------------------------------------------------------------------------------------*/ \
  810.  \
  811. SOM_Scope void  SOMLINK PartName##Externalize(ModuleName##_##PartName *somSelf, Environment *ev) \
  812. { \
  813.     FW_TRY \
  814.     { \
  815.         ModuleName##_##PartName##_parent_ODPart_Externalize(somSelf,ev); \
  816.          \
  817.         FW_CODPart::Externalize(ev, somSelf->GetFrameworkPart(ev)); \
  818.     } \
  819.     FW_CATCH_BEGIN \
  820.     FW_CATCH_REFERENCE(FW_XException, exception) \
  821.     { \
  822.         FW_SetException(ev, exception); \
  823.     } \
  824.     FW_CATCH_END \
  825. } \
  826.  \
  827. /*---------------------------------------------------------------------------------------- \
  828.     Release \
  829. ----------------------------------------------------------------------------------------*/ \
  830.  \
  831. SOM_Scope void  SOMLINK PartName##Release(ModuleName##_##PartName *somSelf, Environment *ev) \
  832. { \
  833.     FW_TRY \
  834.     { \
  835.         ModuleName##_##PartName##_parent_ODPart_Release(somSelf,ev); \
  836.         FW_CODPart::Release(ev, somSelf->GetFrameworkPart(ev)); \
  837.     } \
  838.     FW_CATCH_BEGIN \
  839.     FW_CATCH_REFERENCE(FW_XException, exception) \
  840.     { \
  841.         FW_SetException(ev, exception); \
  842.     } \
  843.     FW_CATCH_END \
  844. } \
  845.  \
  846. /*---------------------------------------------------------------------------------------- \
  847.     ReleaseAll \
  848. ----------------------------------------------------------------------------------------*/ \
  849.  \
  850. SOM_Scope void  SOMLINK PartName##ReleaseAll(ModuleName##_##PartName *somSelf, Environment *ev) \
  851. { \
  852.     FW_TRY \
  853.     { \
  854.         ModuleName##_##PartName##_parent_ODPart_ReleaseAll(somSelf,ev); \
  855.         FW_CODPart::ReleaseAll(ev, somSelf->GetFrameworkPart(ev)); \
  856.         FW_ABANDON_EXTENSIONS \
  857.     } \
  858.     FW_CATCH_BEGIN \
  859.     FW_CATCH_REFERENCE(FW_XException, exception) \
  860.     { \
  861.         FW_SetException(ev, exception); \
  862.     } \
  863.     FW_CATCH_END \
  864. } \
  865.  \
  866. /*---------------------------------------------------------------------------------------- \
  867.     HasExtension \
  868. ----------------------------------------------------------------------------------------*/ \
  869.  \
  870. SOM_Scope ODBoolean  SOMLINK PartName##HasExtension(ModuleName##_##PartName *somSelf, \
  871.                                                     Environment *ev, \
  872.                                                     ODType extensionName) \
  873. { \
  874.     ODBoolean result = FALSE; \
  875.     \
  876.     FW_TRY \
  877.     { \
  878.         FW_HAS_EXTENSION \
  879.         if (!result)  \
  880.             result = ModuleName##_##PartName##_parent_ODPart_HasExtension(somSelf, ev, extensionName);  \
  881.     } \
  882.     FW_CATCH_BEGIN \
  883.     FW_CATCH_REFERENCE(FW_XException, exception) \
  884.     { \
  885.         FW_SetException(ev, exception); \
  886.     } \
  887.     FW_CATCH_END \
  888.     \
  889.     return result; \
  890. } \
  891.  \
  892. /*---------------------------------------------------------------------------------------- \
  893.     AcquireExtension \
  894. ----------------------------------------------------------------------------------------*/ \
  895.  \
  896. SOM_Scope ODExtension*  SOMLINK PartName##AcquireExtension(ModuleName##_##PartName *somSelf, Environment *ev, \
  897.         ODType extensionName) \
  898. { \
  899.     ODExtension* extension = NULL; \
  900.     \
  901.     FW_TRY \
  902.     { \
  903.         FW_ACQUIRE_EXTENSION \
  904.         if (!extension) \
  905.             extension = ModuleName##_##PartName##_parent_ODPart_AcquireExtension(somSelf, ev, extensionName); \
  906.     } \
  907.     FW_CATCH_BEGIN \
  908.     FW_CATCH_REFERENCE(FW_XException, exception) \
  909.     { \
  910.         FW_SetException(ev, exception); \
  911.     } \
  912.     FW_CATCH_END \
  913.     \
  914.     return extension; \
  915. } \
  916.  \
  917. /*---------------------------------------------------------------------------------------- \
  918.     ReleaseExtension \
  919. ----------------------------------------------------------------------------------------*/ \
  920.  \
  921. SOM_Scope void  SOMLINK PartName##ReleaseExtension(ModuleName##_##PartName *somSelf, Environment *ev, \
  922.         ODExtension* extension) \
  923. { \
  924.     ODBoolean released = false; \
  925.     \
  926.     FW_TRY \
  927.     { \
  928.         FW_RELEASE_EXTENSION \
  929.         if (!released) \
  930.             ModuleName##_##PartName##_parent_ODPart_ReleaseExtension(somSelf, ev, extension); \
  931.     } \
  932.     FW_CATCH_BEGIN \
  933.     FW_CATCH_REFERENCE(FW_XException, exception) \
  934.     { \
  935.         FW_SetException(ev, exception); \
  936.     } \
  937.     FW_CATCH_END \
  938. } \
  939.  \
  940. /*---------------------------------------------------------------------------------------- \
  941.     Purge \
  942. ----------------------------------------------------------------------------------------*/ \
  943.  \
  944. SOM_Scope ODSize  SOMLINK PartName##Purge(ModuleName##_##PartName *somSelf, Environment *ev, \
  945.         ODSize size) \
  946. { \
  947.     ODSize bytesRecovered; \
  948.     \
  949.     FW_TRY \
  950.     { \
  951.         FW_PURGE_EXTENSIONS \
  952.         bytesRecovered = FW_CODPart::Purge(ev, somSelf->GetFrameworkPart(ev), size); \
  953.     } \
  954.     FW_CATCH_BEGIN \
  955.     FW_CATCH_REFERENCE(FW_XException, exception) \
  956.     { \
  957.         FW_SetException(ev, exception); \
  958.     } \
  959.     FW_CATCH_END \
  960.     \
  961.     return bytesRecovered; \
  962. } \
  963. \
  964.  
  965. //========================================================================================
  966. // FW_CONTAINER_PART_API macro
  967. //========================================================================================
  968.  
  969.  
  970. #if FW_SUPPORTS_EMBEDDING
  971.  
  972. // ======== Non-EmbeddingPart =========
  973.  
  974. #define FW_CONTAINER_PART_API(ModuleName, PartName, PartClass) \
  975. /*---------------------------------------------------------------------------------------- \
  976.     AdjustBorderShape \
  977. ----------------------------------------------------------------------------------------*/ \
  978.  \
  979. SOM_Scope ODShape*  SOMLINK PartName##AdjustBorderShape(ModuleName##_##PartName *somSelf, Environment * ev, \
  980.         ODFacet* embeddedFacet, \
  981.         ODShape* shape) \
  982. { \
  983.     return FW_CODPart::AdjustBorderShape(ev, embeddedFacet, shape); \
  984. } \
  985.  \
  986. /*---------------------------------------------------------------------------------------- \
  987.     EmbeddedFrameUpdated \
  988. ----------------------------------------------------------------------------------------*/ \
  989.  \
  990. SOM_Scope void  SOMLINK PartName##EmbeddedFrameUpdated(ModuleName##_##PartName *somSelf, Environment *ev, \
  991.         ODFrame* frame, \
  992.         ODUpdateID updateID) \
  993. { \
  994.     FW_CODPart::EmbeddedFrameUpdated(ev, somSelf->GetFrameworkPart(ev), frame, updateID); \
  995. } \
  996.  \
  997. /*---------------------------------------------------------------------------------------- \
  998.     UsedShapeChanged \
  999. ----------------------------------------------------------------------------------------*/ \
  1000.  \
  1001. SOM_Scope void  SOMLINK PartName##UsedShapeChanged(ModuleName##_##PartName *somSelf, Environment *ev, \
  1002.         ODFrame* embeddedFrame) \
  1003. { \
  1004.     FW_CODPart::UsedShapeChanged(ev, embeddedFrame); \
  1005. } \
  1006.  \
  1007. /*---------------------------------------------------------------------------------------- \
  1008.     RevealFrame \
  1009. ----------------------------------------------------------------------------------------*/ \
  1010.  \
  1011. SOM_Scope ODBoolean  SOMLINK PartName##RevealFrame(ModuleName##_##PartName *somSelf, Environment *ev, \
  1012.         ODFrame* embeddedFrame, \
  1013.         ODShape* revealShape) \
  1014. { \
  1015.     return FW_CODPart::RevealFrame(ev, embeddedFrame, revealShape); \
  1016. } \
  1017.  \
  1018. /*---------------------------------------------------------------------------------------- \
  1019.     CreateEmbeddedFramesIterator \
  1020. ----------------------------------------------------------------------------------------*/ \
  1021.  \
  1022. SOM_Scope ODEmbeddedFramesIterator*  SOMLINK PartName##CreateEmbeddedFramesIterator(ModuleName##_##PartName *somSelf, Environment *ev, \
  1023.         ODFrame* frame) \
  1024. { \
  1025.     FW_CEmbeddingFrame* fwFrame = NULL;\
  1026.     ModuleName##_##PartName##EmbeddedFramesIterator* iter = NULL; \
  1027.     FW_VOLATILE(iter); \
  1028. \
  1029.     FW_TRY \
  1030.     { \
  1031.         if (frame != NULL)\
  1032.         {\
  1033.             fwFrame = FW_CEmbeddingFrame::ODtoFWEmbeddingFrame(ev, frame);\
  1034.             FW_ASSERT(fwFrame);\
  1035.         }\
  1036.         \
  1037.         iter = new ModuleName##_##PartName##EmbeddedFramesIterator;\
  1038.         iter->InitIterator(ev, (FW_CEmbeddingPart*)somSelf->GetFrameworkPart(ev), fwFrame);\
  1039.     } \
  1040.     FW_CATCH_BEGIN \
  1041.     FW_CATCH_REFERENCE(FW_XException, exception) \
  1042.     { \
  1043.         delete iter; \
  1044.         iter = NULL; \
  1045.         FW_SetException(ev, exception); \
  1046.     } \
  1047.     FW_CATCH_END \
  1048.     \
  1049.     return iter; \
  1050. } \
  1051.  \
  1052. /*---------------------------------------------------------------------------------------- \
  1053.     RequestEmbeddedFrame \
  1054. ----------------------------------------------------------------------------------------*/ \
  1055.  \
  1056. SOM_Scope ODFrame*  SOMLINK PartName##RequestEmbeddedFrame(ModuleName##_##PartName *somSelf, Environment *ev, \
  1057.         ODFrame* containingFrame, \
  1058.         ODFrame* baseFrame, \
  1059.         ODShape* frameShape, \
  1060.         ODPart* embeddedPart, \
  1061.         ODTypeToken viewType, \
  1062.         ODTypeToken presentation, \
  1063.         ODBoolean isOverlaid) \
  1064. { \
  1065.     return FW_CODPart::RequestEmbeddedFrame(ev,  \
  1066.                                             (FW_CEmbeddingPart*)somSelf->GetFrameworkPart(ev), \
  1067.                                             containingFrame, \
  1068.                                             baseFrame, \
  1069.                                             frameShape, \
  1070.                                             embeddedPart, \
  1071.                                             viewType, \
  1072.                                             presentation, \
  1073.                                             isOverlaid); \
  1074. } \
  1075.  \
  1076. /*---------------------------------------------------------------------------------------- \
  1077.     RemoveEmbeddedFrame \
  1078. ----------------------------------------------------------------------------------------*/ \
  1079.  \
  1080. SOM_Scope void  SOMLINK PartName##RemoveEmbeddedFrame(ModuleName##_##PartName *somSelf, Environment *ev, \
  1081.         ODFrame* embeddedFrame) \
  1082. { \
  1083.     FW_CODPart::RemoveEmbeddedFrame(ev, \
  1084.                                     (FW_CEmbeddingPart*)somSelf->GetFrameworkPart(ev), \
  1085.                                     embeddedFrame); \
  1086. } \
  1087.  \
  1088. /*---------------------------------------------------------------------------------------- \
  1089.     RequestFrameShape \
  1090. ----------------------------------------------------------------------------------------*/ \
  1091.  \
  1092. SOM_Scope ODShape*  SOMLINK PartName##RequestFrameShape(ModuleName##_##PartName *somSelf, Environment *ev, \
  1093.         ODFrame* embeddedFrame, \
  1094.         ODShape* frameShape) \
  1095. { \
  1096.     return FW_CODPart::RequestFrameShape(ev, embeddedFrame, frameShape); \
  1097. } \
  1098.  \
  1099. /*---------------------------------------------------------------------------------------- \
  1100.     AcquireContainingPartProperties \
  1101. ----------------------------------------------------------------------------------------*/ \
  1102.  \
  1103. SOM_Scope ODStorageUnit*  SOMLINK PartName##AcquireContainingPartProperties(ModuleName##_##PartName *somSelf, \
  1104.                                                                             Environment *ev, \
  1105.                                                                             ODFrame* frame) \
  1106. { \
  1107.     return FW_CODPart::AcquireContainingPartProperties(ev, \
  1108.                                                     (FW_CEmbeddingPart*)somSelf->GetFrameworkPart(ev), \
  1109.                                                     frame); \
  1110. }
  1111.  
  1112. #else
  1113.  
  1114. // ======== Non-EmbeddingPart =========
  1115.  
  1116. #define FW_CONTAINER_PART_API(ModuleName, PartName, PartClass) \
  1117. /*---------------------------------------------------------------------------------------- \
  1118.     AdjustBorderShape \
  1119. ----------------------------------------------------------------------------------------*/ \
  1120.  \
  1121. SOM_Scope ODShape*  SOMLINK PartName##AdjustBorderShape(ModuleName##_##PartName *somSelf, Environment * ev, \
  1122.         ODFacet* embeddedFacet, \
  1123.         ODShape* shape) \
  1124. { \
  1125.     FW_DEBUG_MESSAGE("AdjustBorderShape: Error, this part editor does not support embedding"); \
  1126.     if (shape != NULL) \
  1127.         shape->Acquire(ev); \
  1128.     return shape; \
  1129. } \
  1130.  \
  1131. /*---------------------------------------------------------------------------------------- \
  1132.     EmbeddedFrameUpdated \
  1133. ----------------------------------------------------------------------------------------*/ \
  1134.  \
  1135. SOM_Scope void  SOMLINK PartName##EmbeddedFrameUpdated(ModuleName##_##PartName *somSelf, Environment *ev, \
  1136.         ODFrame* frame, \
  1137.         ODUpdateID updateID) \
  1138. { \
  1139.     FW_DEBUG_MESSAGE("EmbeddedFrameUpdated: Error, this part editor does not support embedding"); \
  1140. } \
  1141.  \
  1142. /*---------------------------------------------------------------------------------------- \
  1143.     UsedShapeChanged \
  1144. ----------------------------------------------------------------------------------------*/ \
  1145.  \
  1146. SOM_Scope void  SOMLINK PartName##UsedShapeChanged(ModuleName##_##PartName *somSelf, Environment *ev, \
  1147.         ODFrame* embeddedFrame) \
  1148. { \
  1149.     FW_DEBUG_MESSAGE("UsedShapeChanged: Error, this part editor does not support embedding"); \
  1150. } \
  1151.  \
  1152. /*---------------------------------------------------------------------------------------- \
  1153.     RevealFrame \
  1154. ----------------------------------------------------------------------------------------*/ \
  1155.  \
  1156. SOM_Scope ODBoolean  SOMLINK PartName##RevealFrame(ModuleName##_##PartName *somSelf, Environment *ev, \
  1157.         ODFrame* embeddedFrame, \
  1158.         ODShape* revealShape) \
  1159. { \
  1160.     FW_DEBUG_MESSAGE("RevealFrame: Error, this part editor does not support embedding"); \
  1161.     return FALSE; \
  1162. } \
  1163.  \
  1164. /*---------------------------------------------------------------------------------------- \
  1165.     CreateEmbeddedFramesIterator \
  1166. ----------------------------------------------------------------------------------------*/ \
  1167.  \
  1168. SOM_Scope ODEmbeddedFramesIterator*  SOMLINK PartName##CreateEmbeddedFramesIterator(ModuleName##_##PartName *somSelf, Environment *ev, \
  1169.         ODFrame* frame) \
  1170. { \
  1171.     FW_SetEvError(ev, kODErrCannotEmbed); \
  1172.     return NULL; \
  1173. } \
  1174.  \
  1175. /*---------------------------------------------------------------------------------------- \
  1176.     RequestEmbeddedFrame \
  1177. ----------------------------------------------------------------------------------------*/ \
  1178.  \
  1179. SOM_Scope ODFrame*  SOMLINK PartName##RequestEmbeddedFrame(ModuleName##_##PartName *somSelf, Environment *ev, \
  1180.         ODFrame* containingFrame, \
  1181.         ODFrame* baseFrame, \
  1182.         ODShape* frameShape, \
  1183.         ODPart* embeddedPart, \
  1184.         ODTypeToken viewType, \
  1185.         ODTypeToken presentation, \
  1186.         ODBoolean isOverlaid) \
  1187. { \
  1188.     FW_DEBUG_MESSAGE("RequestEmbeddedFrame: Error, this part editor does not support embedding"); \
  1189.     return NULL; \
  1190. } \
  1191.  \
  1192. /*---------------------------------------------------------------------------------------- \
  1193.     RemoveEmbeddedFrame \
  1194. ----------------------------------------------------------------------------------------*/ \
  1195.  \
  1196. SOM_Scope void  SOMLINK PartName##RemoveEmbeddedFrame(ModuleName##_##PartName *somSelf, Environment *ev, \
  1197.         ODFrame* embeddedFrame) \
  1198. { \
  1199.     FW_DEBUG_MESSAGE("RemoveEmbeddedFrame: Error, this part editor does not support embedding"); \
  1200. } \
  1201.  \
  1202. /*---------------------------------------------------------------------------------------- \
  1203.     RequestFrameShape \
  1204. ----------------------------------------------------------------------------------------*/ \
  1205.  \
  1206. SOM_Scope ODShape*  SOMLINK PartName##RequestFrameShape(ModuleName##_##PartName *somSelf, Environment *ev, \
  1207.         ODFrame* embeddedFrame, \
  1208.         ODShape* frameShape) \
  1209. { \
  1210.     FW_DEBUG_MESSAGE("RequestFrameShape: Error, this part editor does not support embedding"); \
  1211.     frameShape->Acquire(ev); \
  1212.     return frameShape; \
  1213. } \
  1214.  \
  1215. /*---------------------------------------------------------------------------------------- \
  1216.     AcquireContainingPartProperties \
  1217. ----------------------------------------------------------------------------------------*/ \
  1218.  \
  1219. SOM_Scope ODStorageUnit*  SOMLINK PartName##AcquireContainingPartProperties(ModuleName##_##PartName *somSelf, \
  1220.                                                                             Environment *ev, \
  1221.                                                                             ODFrame* frame) \
  1222. { \
  1223.     FW_SetEvError(ev, kODErrCannotEmbed); \
  1224.     return NULL; \
  1225. }
  1226.  
  1227.  
  1228. #endif
  1229.